package br.ufrj.ad.estatistica;

import java.util.ArrayList;

import org.apache.commons.math.stat.descriptive.DescriptiveStatistics;

import br.ufrj.ad.entidade.Rodada;

public class Medida {

	public static boolean is_IC95_Satisfeito(ArrayList<Rodada> rodadas, int MINIMO_RODADAS) {
		if(rodadas.size() < MINIMO_RODADAS) {
			return false;
		}
		
		DescriptiveStatistics estimadorTempoUploads = new DescriptiveStatistics();
		for (Rodada r : rodadas) {
			//descartando a rodada transiente(-1) e a MM1(-2)
			if(r.getNumeroRodada() < 0) {
				continue;
			}
			estimadorTempoUploads.addValue(r.getMediaTempoDownloads());
		}
		
		return IC95(estimadorTempoUploads.getVariance(), estimadorTempoUploads.getN()) < ( 0.1 * estimadorTempoUploads.getMean() );
	}
	
	public static double IC95(double variancia, long N) {
		return (2*1.96*Math.sqrt(variancia)) / Math.sqrt(N) ;
	}
}
